package model

import (
	"manager/model/entity"
)

// RegionCreateRequest 创建现场数据
type RegionCreateRequest struct {
	Code string `json:"code"`

	CountryCode string `json:"country_code"`

	RegionNameE string `json:"region_name_e"`

	RegionNameC string `json:"region_name_c"`

	Level int `json:"level"`

	UpperRegion string `json:"upper_region"`

	UpdatedAt int64 `json:"updated_at"`
}

// RegionUpdateRequest 更新现场数据
type RegionUpdateRequest struct {
	Id int64 `json:"id"`

	Code *string `json:"code"`

	Codes []string `json:"codes"`

	CountryCode *string `json:"country_code"`

	RegionNameE *string `json:"region_name_e"`

	RegionNameC *string `json:"region_name_c"`

	Level *int `json:"level"`

	UpperRegion *string `json:"upper_region"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// RegionListRequest 列表现场数据
type RegionListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	Code *string `json:"code"`

	AreaIds []string `json:"area_ids"`

	CountryCode *string `json:"country_code"`

	RegionNameE *string `json:"region_name_e"`

	RegionNameC *string `json:"region_name_c"`

	Level *int `json:"level"`

	UpperRegion *string `json:"upper_region"`

	UpdatedAt *int64 `json:"updated_at"`
}

// RegionListResponse 列表回包数据
type RegionListResponse struct {
	Total int           `json:"total"`
	List  []*RegionInfo `json:"list"`
}

// RegionInfoRequest 列表现场数据
type RegionInfoRequest struct {
	Id int64 `json:"id"`

	Code *string `json:"code"`

	CountryCode *string `json:"country_code"`

	RegionNameE *string `json:"region_name_e"`

	RegionNameC *string `json:"region_name_c"`

	Level *int `json:"level"`

	UpperRegion *string `json:"upper_region"`

	UpdatedAt *int64 `json:"updated_at"`
}

// RegionInfo 详细数据
type RegionInfo struct {
	Id int64 `json:"id"`

	Code string `json:"code"`

	CountryCode string `json:"country_code"`

	RegionNameE string `json:"region_name_e"`

	RegionNameC string `json:"region_name_c"`

	Level int `json:"level"`

	UpperRegion string `json:"upper_region"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// RegionDeleteRequest 删除现场数据
type RegionDeleteRequest struct {
	Id int64 `json:"id"`
}

// RegionsEntityToDto entity数据转换
func RegionsEntityToDto(regions []*entity.Region) []*RegionInfo {
	out := make([]*RegionInfo, 0, len(regions))
	for _, c := range regions {
		out = append(out, RegionEntityToDto(c))
	}
	return out
}

// RegionEntityToDto entity数据转换
func RegionEntityToDto(e *entity.Region) *RegionInfo {
	return &RegionInfo{

		Id: e.Id,

		Code: e.Code,

		CountryCode: e.CountryCode,

		RegionNameE: e.RegionNameE,

		RegionNameC: e.RegionNameC,

		Level: e.Level,

		UpperRegion: e.UpperRegion,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
